//package com.weseal.service.impl;
//
//import com.weseal.dao.LoginRecordDao;
//import com.weseal.dao.MasterInfoDao;
//import com.weseal.domain.LoginRecord;
//import com.weseal.domain.MasterInfo;
//import com.weseal.exception.MasterException;
//import com.weseal.form.MasterInfoForm;
//import com.weseal.query.MasterInfoQuery;
//import com.weseal.response.CommonResult;
//import com.weseal.response.ResponseResult;
//import com.weseal.service.MasterInfoService;
//import com.weseal.service.RoleInfoService;
//import com.weseal.utils.EncryptUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.stereotype.Service;
//
//import java.util.Date;
//import java.util.List;
//import java.util.UUID;
//
//@Service
//public class MasterInfoServiceImpl implements MasterInfoService {
//
//	//@Autowired
//	private MasterInfoDao masterInfoDao;
//
//	//@Autowired
//	private LoginRecordDao loginRecordDao;
//
//	//@Autowired
//	private RoleInfoService roleInfoService;
//
//	//@Transactional
//	public void create(MasterInfoForm form) {
//		if (form == null) {
//			throw MasterException.MASTER_INFO_BLANK;
//		}
//		if (StringUtils.isBlank(form.getLoginName()) || StringUtils.isBlank(form.getUserName())) {
//			throw MasterException.MASTER_NAME_BLANK;
//		}
//		MasterInfo domain = form.convert2Domain();
//		domain.setPassword(EncryptUtils.GetMD5Code(domain.getPassword()));
//		masterInfoDao.insert(domain);
//		roleInfoService.insertRelation(domain.getId(), form.getType());
//	}
//
//	public MasterInfoVo select(MasterInfoQuery query) {
//		MasterInfo masterInfo = masterInfoDao.select(query);
//		return checkMaster(masterInfo);
//	}
//
//	public MasterInfoVo select(Long id) {
//		MasterInfo masterInfo = masterInfoDao.selectById(id);
//		return checkMaster(masterInfo);
//	}
//
//	/**
//	 * 检查用户是否异常
//	 *
//	 * @param masterInfo
//	 * @return
//	 */
//	private MasterInfoVo checkMaster(MasterInfo masterInfo) {
//		if (masterInfo == null) {
//			throw MasterException.MASTER_NOT_FIND_EXCEPTION;
//		}
//		if (masterInfo.getLock()) {
//			throw MasterException.MASTER_LOCKED_EXCEPTION;
//		}
//		return MasterInfoVo.convert2Vo(masterInfo);
//	}
//
//	//@Transactional
//	@Override
//	public void update(MasterInfoForm form) {
//		if (form == null && form.getId() == null) {
//			throw MasterException.MASTER_INFO_BLANK;
//		}
//		MasterInfo domain = form.convert2Domain();
//		masterInfoDao.update(domain);
//		if (form.getType() != null) {
//			roleInfoService.updateRelation(domain.getId(), form.getType());
//		}
//	}
//
//	//@Transactional
//	@Override
//	public void updatePassword(MasterInfoForm form) {
//		MasterInfoVo masterInfoVo = this.select(form.getId());
//		if (!masterInfoVo.getPassword().equals(EncryptUtils.GetMD5Code(form.getPassword()))) {
//			throw MasterException.MASTER_PASSWORD_FAULT;
//		}
//		form.setPassword(EncryptUtils.GetMD5Code(form.getPassword()));
//		this.update(form);
//		loginRecordDao.updateOverdue(masterInfoVo.getId());
//	}
//
//	//@Transactional
//	@Override
//	public void resetPassword(MasterInfoForm form) {
//		if (form.getId() == null) {
//			throw MasterException.MASTER_NOT_FIND_EXCEPTION;
//		}
//		form.setPassword(EncryptUtils.GetMD5Code(form.getPassword()));
//		this.update(form);
//		loginRecordDao.updateOverdue(form.getId());
//	}
//
//
//	@Override
//	public void delete(Long id) {
//		masterInfoDao.deleteById(id);
//	}
//
//	@Override
//	public ResponseResult<MasterInfoVo> pageQuery(MasterInfoQuery query) {
//		List<MasterInfo> domains = masterInfoDao.pageQuery(query);
//		List<MasterInfoVo> masterInfoVos = MasterInfoVo.convert2Vo(domains);
//		return new ResponseResult<MasterInfoVo>(masterInfoVos, query, domains);
//	}
//
//	//@Transactional
//	public CommonResult<MasterInfoVo> login(MasterInfoQuery query) {
//		CommonResult<MasterInfoVo> result = CommonResult.initSuccess();
//		MasterInfoVo masterInfoVo = this.select(query);
//		if (!masterInfoVo.getPassword().equals(EncryptUtils.GetMD5Code(query.getPassword()))) {
//			throw MasterException.MASTER_VALID_EXCEPTION;
//		}
//		loginRecordDao.updateOverdue(masterInfoVo.getId());
//		LoginRecord loginRecord = initLoginRecord(masterInfoVo.getId());
//		loginRecord.setIp(query.getIp());
//		if (loginRecordDao.insert(loginRecord) > 0) {
//			masterInfoVo.setTicket(loginRecord.getTicket());
//		}
//		MasterInfo masterInfo = new MasterInfo();
//		masterInfo.setId(masterInfoVo.getId());
//		masterInfo.setUpdateTime(new Date());
//		masterInfo.setLastLoginTime(new Date());
//		masterInfoDao.update(masterInfo);
//		result.setData(masterInfoVo);
//		return result;
//	}
//
//
//	/**
//	 * 初始化登录记录
//	 *
//	 * @param masterId
//	 * @return
//	 */
//	private LoginRecord initLoginRecord(Long masterId) {
//		LoginRecord loginRecord = new LoginRecord();
//		loginRecord.setOverdue(Boolean.FALSE);
//		loginRecord.setMasterId(masterId);
//		loginRecord.setTicket(UUID.randomUUID().toString());
//		return loginRecord;
//	}
//
//
//}